home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / dev / lang / fpc09905c.lha / fpc / units / exec.pp < prev    next >
Text File  |  1998-09-21  |  32KB  |  1,584 lines

  1. {
  2.     This file is part of the Free Pascal run time library.
  3.  
  4.     A file in Amiga system run time library.
  5.     Copyright (c) 1998 by Nils Sjoholm
  6.     member of the Amiga RTL development team.
  7.  
  8.     See the file COPYING.FPC, included in this distribution,
  9.     for details about the copyright.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14.  
  15.  **********************************************************************}
  16.  
  17.  
  18. UNIT EXEC;
  19.  
  20. INTERFACE
  21.  
  22. {$I exec.inc}
  23.  
  24.  
  25. PROCEDURE AbortIO(ioRequest : pIORequest);
  26. PROCEDURE AddDevice(device : pDevice);
  27. PROCEDURE AddHead(list : pList; node : pNode);
  28. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  29. PROCEDURE AddLibrary(lib : pLibrary);
  30. PROCEDURE AddMemHandler(memhand : pInterrupt);
  31. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; name : pCHAR);
  32. PROCEDURE AddPort(port : pMsgPort);
  33. PROCEDURE AddResource(resource : POINTER);
  34. PROCEDURE AddSemaphore(sigSem : pSignalSemaphore);
  35. PROCEDURE AddTail(list : pList; node : pNode);
  36. FUNCTION AddTask(task : pTask; initPC : POINTER; finalPC : POINTER) : POINTER;
  37. PROCEDURE Alert(alertNum : ULONG);
  38. FUNCTION AllocAbs(byteSize : ULONG; location : POINTER) : POINTER;
  39. FUNCTION Allocate(freeList : pMemHeader; byteSize : ULONG) : POINTER;
  40. FUNCTION AllocEntry(entry : pMemList) : pMemList;
  41. FUNCTION AllocMem(byteSize : ULONG; requirements : ULONG) : POINTER;
  42. FUNCTION AllocPooled(poolHeader : POINTER; memSize : ULONG) : POINTER;
  43. FUNCTION AllocSignal(signalNum : LONGINT) : SHORTINT;
  44. FUNCTION AllocTrap(trapNum : LONGINT) : LONGINT;
  45. FUNCTION AllocVec(byteSize : ULONG; requirements : ULONG) : POINTER;
  46. FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore) : BOOLEAN;
  47. FUNCTION AttemptSemaphoreShared(sigSem : pSignalSemaphore) : ULONG;
  48. FUNCTION AvailMem(requirements : ULONG) : ULONG;
  49. PROCEDURE CacheClearE(address : POINTER; length : ULONG; caches : ULONG);
  50. PROCEDURE CacheClearU;
  51. FUNCTION CacheControl(cacheBits : ULONG; cacheMask : ULONG) : ULONG;
  52. PROCEDURE CachePostDMA(address : POINTER; VAR length : ULONG; flags : ULONG);
  53. FUNCTION CachePreDMA(address : POINTER; VAR length : ULONG; flags : ULONG) : POINTER;
  54. PROCEDURE Cause(interrupt : pInterrupt);
  55. FUNCTION CheckIO(ioRequest : pIORequest) : pIORequest;
  56. PROCEDURE ChildFree(tid : POINTER);
  57. PROCEDURE ChildOrphan(tid : POINTER);
  58. PROCEDURE ChildStatus(tid : POINTER);
  59. PROCEDURE ChildWait(tid : POINTER);
  60. PROCEDURE CloseDevice(ioRequest : pIORequest);
  61. PROCEDURE CloseLibrary(lib : pLibrary);
  62. PROCEDURE ColdReboot;
  63. PROCEDURE CopyMem(source : POINTER; dest : POINTER; size : ULONG);
  64. PROCEDURE CopyMemQuick(source : POINTER; dest : POINTER; size : ULONG);
  65. FUNCTION CreateIORequest(port : pMsgPort; size : ULONG) : POINTER;
  66. FUNCTION CreateMsgPort : pMsgPort;
  67. FUNCTION CreatePool(requirements : ULONG; puddleSize : ULONG; threshSize : ULONG) : POINTER;
  68. PROCEDURE Deallocate(freeList : pMemHeader; memoryBlock : POINTER; byteSize : ULONG);
  69. PROCEDURE Debug(flags : ULONG);
  70. PROCEDURE DeleteIORequest(iorequest : POINTER);
  71. PROCEDURE DeleteMsgPort(port : pMsgPort);
  72. PROCEDURE DeletePool(poolHeader : POINTER);
  73. PROCEDURE Disable;
  74. FUNCTION DoIO(ioRequest : pIORequest) : SHORTINT;
  75. PROCEDURE Enable;
  76. PROCEDURE Enqueue(list : pList; node : pNode);
  77. PROCEDURE ExecFreeMem(memoryBlock : POINTER; byteSize : ULONG);
  78. PROCEDURE ExecInsert(list : pList; node : pNode; pred : pNode);
  79. FUNCTION FindName(list : pList; name : pCHAR) : pNode;
  80. FUNCTION FindPort(name : pCHAR) : pMsgPort;
  81. FUNCTION FindResident(name : pCHAR) : pResident;
  82. FUNCTION FindSemaphore(sigSem : pCHAR) : pSignalSemaphore;
  83. FUNCTION FindTask(name : pCHAR) : pTask;
  84. PROCEDURE Forbid;
  85. PROCEDURE FreeEntry(entry : pMemList);
  86. PROCEDURE FreePooled(poolHeader : POINTER; memory : POINTER; memSize : ULONG);
  87. PROCEDURE FreeSignal(signalNum : LONGINT);
  88. PROCEDURE FreeTrap(trapNum : LONGINT);
  89. PROCEDURE FreeVec(memoryBlock : POINTER);
  90. FUNCTION GetCC : ULONG;
  91. FUNCTION GetMsg(port : pMsgPort) : pMessage;
  92. PROCEDURE InitCode(startClass : ULONG; version : ULONG);
  93. FUNCTION InitResident(resident : pResident; segList : ULONG) : POINTER;
  94. PROCEDURE InitSemaphore(sigSem : pSignalSemaphore);
  95. PROCEDURE InitStruct(initTable : POINTER; memory : POINTER; size : ULONG);
  96. PROCEDURE MakeFunctions(target : POINTER; functionArray : POINTER; funcDispBase : ULONG);
  97. FUNCTION MakeLibrary(funcInit : POINTER; structInit : POINTER; libInit : tPROCEDURE; dataSize : ULONG; segList : ULONG) : pLibrary;
  98. FUNCTION ObtainQuickVector(interruptCode : POINTER) : ULONG;
  99. PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore);
  100. PROCEDURE ObtainSemaphoreList(sigSem : pList);
  101. PROCEDURE ObtainSemaphoreShared(sigSem : pSignalSemaphore);
  102. FUNCTION OldOpenLibrary(libName : pCHAR) : pLibrary;
  103. FUNCTION OpenDevice(devName : pCHAR; unite : ULONG; ioRequest : pIORequest; flags : ULONG) : SHORTINT;
  104. FUNCTION OpenLibrary(libName : pCHAR; version : ULONG) : pLibrary;
  105. FUNCTION OpenResource(resName : pCHAR) : POINTER;
  106. PROCEDURE Permit;
  107. FUNCTION Procure(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage) : BOOLEAN;
  108. PROCEDURE PutMsg(port : pMsgPort; message : pMessage);
  109. PROCEDURE RawDoFmt(formatString : pCHAR; dataStream : POINTER; putChProc : tPROCEDURE; putChData : POINTER);
  110. PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore);
  111. PROCEDURE ReleaseSemaphoreList(sigSem : pList);
  112. PROCEDURE RemDevice(device : pDevice);
  113. FUNCTION RemHead(list : pList) : pNode;
  114. PROCEDURE RemIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  115. PROCEDURE RemLibrary(lib : pLibrary);
  116. PROCEDURE RemMemHandler(memhand : pInterrupt);
  117. PROCEDURE Remove(node : pNode);
  118. PROCEDURE RemPort(port : pMsgPort);
  119. PROCEDURE RemResource(resource : POINTER);
  120. PROCEDURE RemSemaphore(sigSem : pSignalSemaphore);
  121. FUNCTION RemTail(list : pList) : pNode;
  122. PROCEDURE RemTask(task : pTask);
  123. PROCEDURE ReplyMsg(message : pMessage);
  124. PROCEDURE SendIO(ioRequest : pIORequest);
  125. FUNCTION SetExcept(newSignals : ULONG; signalSet : ULONG) : ULONG;
  126. FUNCTION SetFunction(lib : pLibrary; funcOffset : LONGINT; newFunction : tPROCEDURE) : POINTER;
  127. FUNCTION SetIntVector(intNumber : LONGINT; interrupt : pInterrupt) : pInterrupt;
  128. FUNCTION SetSignal(newSignals : ULONG; signalSet : ULONG) : ULONG;
  129. FUNCTION SetSR(newSR : ULONG; mask : ULONG) : ULONG;
  130. FUNCTION SetTaskPri(task : pTask; priority : LONGINT) : SHORTINT;
  131. PROCEDURE Signal(task : pTask; signalSet : ULONG);
  132. PROCEDURE StackSwap(newStack : pStackSwapStruct);
  133. PROCEDURE SumKickData;
  134. PROCEDURE SumLibrary(lib : pLibrary);
  135. FUNCTION SuperState : POINTER;
  136. FUNCTION Supervisor(userFunction : tPROCEDURE) : ULONG;
  137. FUNCTION TypeOfMem(address : POINTER) : ULONG;
  138. PROCEDURE UserState(sysStack : POINTER);
  139. PROCEDURE Vacate(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage);
  140. FUNCTION Wait(signalSet : ULONG) : ULONG;
  141. FUNCTION WaitIO(ioRequest : pIORequest) : SHORTINT;
  142. FUNCTION WaitPort(port : pMsgPort) : pMessage;
  143.  
  144. IMPLEMENTATION
  145.  
  146. PROCEDURE AbortIO(ioRequest : pIORequest);
  147. BEGIN
  148.   ASM
  149.     MOVE.L  A6,-(A7)
  150.     MOVEA.L ioRequest,A1
  151.     MOVEA.L _ExecBase,A6
  152.     JSR -480(A6)
  153.     MOVEA.L (A7)+,A6
  154.   END;
  155. END;
  156.  
  157. PROCEDURE AddDevice(device : pDevice);
  158. BEGIN
  159.   ASM
  160.     MOVE.L  A6,-(A7)
  161.     MOVEA.L device,A1
  162.     MOVEA.L _ExecBase,A6
  163.     JSR -432(A6)
  164.     MOVEA.L (A7)+,A6
  165.   END;
  166. END;
  167.  
  168. PROCEDURE AddHead(list : pList; node : pNode);
  169. BEGIN
  170.   ASM
  171.     MOVE.L  A6,-(A7)
  172.     MOVEA.L list,A0
  173.     MOVEA.L node,A1
  174.     MOVEA.L _ExecBase,A6
  175.     JSR -240(A6)
  176.     MOVEA.L (A7)+,A6
  177.   END;
  178. END;
  179.  
  180. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  181. BEGIN
  182.   ASM
  183.     MOVE.L  A6,-(A7)
  184.     MOVE.L  intNumber,D0
  185.     MOVEA.L interrupt,A1
  186.     MOVEA.L _ExecBase,A6
  187.     JSR -168(A6)
  188.     MOVEA.L (A7)+,A6
  189.   END;
  190. END;
  191.  
  192. PROCEDURE AddLibrary(lib : pLibrary);
  193. BEGIN
  194.   ASM
  195.     MOVE.L  A6,-(A7)
  196.     MOVEA.L lib,A1
  197.     MOVEA.L _ExecBase,A6
  198.     JSR -396(A6)
  199.     MOVEA.L (A7)+,A6
  200.   END;
  201. END;
  202.  
  203. PROCEDURE AddMemHandler(memhand : pInterrupt);
  204. BEGIN
  205.   ASM
  206.     MOVE.L  A6,-(A7)
  207.     MOVEA.L memhand,A1
  208.     MOVEA.L _ExecBase,A6
  209.     JSR -774(A6)
  210.     MOVEA.L (A7)+,A6
  211.   END;
  212. END;
  213.  
  214. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; name : pCHAR);
  215. BEGIN
  216.   ASM
  217.     MOVE.L